// 包声明 - main包是Go程序的入口包
package main

// 导入fmt包，该包提供格式化输入输出功能
import "fmt"

// main函数 - Go程序的入口函数
func main() {
  // fmt.Println() - 打印内容并换行
  // 可以打印字符串
  fmt.Println("枫枫知道")
  // 可以打印数字
  fmt.Println(1)
  // 可以打印布尔值
  fmt.Println(true)
  // 可以同时打印多个值，用空格分隔
  fmt.Println("什么", "都", "可以", "输出")

  // 格式化输出 - fmt.Printf()
  // 使用格式化动词（format verbs）控制输出格式
  
  // %v - 可以作为任何值的通用占位符
  fmt.Printf("%v\n", "你好")
  
  // %T - 打印变量的类型
  fmt.Printf("%v %T\n", "枫枫", "枫枫")
  
  // %d - 打印整数
  fmt.Printf("%d\n", 3)
  
  // %.2f - 打印保留2位小数的浮点数
  fmt.Printf("%.2f\n", 1.25)
  
  // %s - 打印字符串
  fmt.Printf("%s\n", "哈哈哈")
  
  // %#v - 用Go的语法格式输出值，特别适合打印空字符串或复杂结构
  fmt.Printf("%#v\n", "")

  // fmt.Sprintf() - 将格式化后的内容赋值给变量，而不是直接输出
  name := fmt.Sprintf("%v", "你好")
  fmt.Println(name)  // 打印格式化后的变量

  // 从控制台读取输入 - fmt.Scan()
  // 注意：在变量前面需要加&符号（取地址符）
  fmt.Println("请输入您的名字：")
  var userName string
  fmt.Scan(&userName)  // 读取用户输入并存储到userName变量中
  fmt.Println("您输入的名字是：", userName)

  // 读取多个输入
  fmt.Println("请输入两个数字：")
  var num1, num2 int
  fmt.Scan(&num1, &num2)
  fmt.Printf("您输入的两个数字是：%d 和 %d\n", num1, num2)
}